コントローラーのedit, deleteアクションの追加
今日はコントローラーのedit, destroyアクションを追加したのでメモする。
ルーティングの設定
ルートに edit
と destroy
を追加する。
Rails.application.routes.draw do
devise_for :users
root 'tweets#index'
resources :tweets, only: %i(new create edit destroy)
end
edit機能の実装
まずはコントローラーにeditアクションを追加していく
def edit
@tweet = Tweet.find(params[:id])
end
はい、これだけ。次にeditアクションのviewを作成する。まずはindexに表示される”編集”の挙動部分を作る。
<div class="text-right pb-1">
<button type="button", class="btn btn-outline-secondary">
<%= link_to "編集", edit_tweet_path(tweet) %>
</button>
</div>
次にindexから編集ボタンを押した先の編集画面を作成。
<div class="card tweet-card">
<div class="card-header">
編集する
</div>
<div class="card-body">
<%= form_with model: @tweet do |f| %>
<div class="tweet-body">
<%= image_tag current_user.profile_photo, class: "avatar avatar-size32" %>
<%= f.text_area :text, class: "form-control", rows: "3" %>
</div>
<div class="buttons">
<%= f.submit "保存", class: "btn btn-primary tweet-btn" %>
</div>
<% end %>
</div>
</div>
基本は new.html.erb
と一緒。文言だけ一部修正。共通化は明日以降かな。
delete機能の実装
同じくコントローラーにdestroyアクションを追加していく
def edit
@tweet = Tweet.find(params[:id])
end
次にdestroyアクションのviewを作成する。
<div class="text-right pb-1">
<button type="button", class="btn btn-outline-secondary">
<%= link_to "編集", edit_tweet_path(tweet) %>
</button>
<button type="button", class="btn btn-outline-secondary">
<%= link_to "削除", tweet_path(tweet), method: :delete, data: {confirm: "削除していいですか?"} %>
</button>
</div>
これで編集と削除機能の実装は完了。明日はタグ機能やる予定!